package br.com.estudante.controle;

import java.util.List;

import javax.faces.bean.ManagedBean;
import javax.faces.context.ExternalContext;
import javax.faces.context.FacesContext;
import javax.persistence.EntityManager;
import javax.servlet.http.HttpServletRequest;

import br.com.estudante.modelo.Estudante;
import br.com.estudante.modelo.EstudanteRepository;

@ManagedBean
public class EstudanteBean {

	//atributos
	private Estudante estudante = new Estudante();
	
	//métodos
	//adiciona
	public void salvaEstudante() {
		EntityManager manager = this.getEntityManager();
		EstudanteRepository er = new EstudanteRepository(manager);
		er.salvar(estudante);
		this.estudante = new Estudante();
	}
	
	//deleta
	public void deletaEstudante() {
		EntityManager manager = this.getEntityManager();
		EstudanteRepository er = new EstudanteRepository(manager);
		er.deletar(estudante);
		this.estudante = new Estudante();
	}
	
	//lista todos
	public List<Estudante> listaEstudantes() {
		EntityManager manager = this.getEntityManager();
		EstudanteRepository er = new EstudanteRepository(manager);
		return er.listaTodos();
	}
	
	//busca por Id
	public Estudante buscaEstudante(Long id) {
		EntityManager manager = this.getEntityManager();
		EstudanteRepository er = new EstudanteRepository(manager);
		return er.buscar(id);
	}
	
	//recupera o entity manager da requisição
	public EntityManager getEntityManager() {
		FacesContext facesContext = FacesContext.getCurrentInstance();
		ExternalContext externalContext = facesContext.getExternalContext();
		HttpServletRequest request = (HttpServletRequest) externalContext.getRequest();
		EntityManager manager = (EntityManager) request.getAttribute("EntityManager");
		return manager;
	}
	
}
